package com.ccx.demo.Controller;

import com.ccx.demo.captcha.Cache.captchaCache;
import com.ccx.demo.captcha.entity.ImgResult;
import com.ccx.demo.utils.CaptchaUtil;
import com.ccx.demo.utils.UUIDUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@CrossOrigin
public class CaptchaController {

    @Autowired
    private captchaCache captchaCache;

    @GetMapping("/getCaptcha")
    @ResponseBody
    public ImgResult getCaptcha() {
        //画图工具类
        CaptchaUtil imageCode = new CaptchaUtil();
        // 获取验证码对应的 base64  编码
        String base64 = CaptchaUtil.getBase64(imageCode.getImage());

        // 获取对应的 验证码 code
        String code = imageCode.getCode();

        // 生成 UUID
        String imgUUID = UUIDUtil.getUUIDString();

        // 封装 获取的 验证码相关的数据 到 验证码对象中，并响应
        ImgResult imgResult = new ImgResult();
        imgResult.setImgUUID(imgUUID);
        imgResult.setImg(base64);
        imgResult.setCode(code);

        // 将验证码的信息保存到 redis中,并设置 有效时间！
        captchaCache.setEx(imgUUID, code);

        // 将封装好的验证码对象响应给前端
        return ImgResult.success(imgResult);

    }
}
